package map;

import java.util.HashMap;
import java.util.Map;

/**
 *  map:查找表
 *  Map体现的样式是一个多行两列的表格，总是以键值对的方式储存数据
 *  左列为 键，右列为 值
 *  Map要求key不允许重复（equals比较）
 *  Map总是根据key来获取对应的value
 *
 *  java.util.Map是一个接口，常用的两个实现有
 *  java.util.HashMap：散列查找表
 *  java.util.TreeMap
 */
public class MapDemo1 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();

        Integer value =map.put("语文",99);
        System.out.println(value);//null,不是替换操作则返回null
        value =map.put("数学",98);
        value =map.put("英语",97);
        value =map.put("物理",96);
        value =map.put("化学",95);
        System.out.println(map);//{物理=96, 数学=98, 化学=95, 语文=99, 英语=97}

        value =map.put("物理",50);//替换操作
        System.out.println(map);//{物理=50, 数学=98, 化学=95, 语文=99, 英语=97}
        System.out.println(value);//96


        value = map.get("语文");
        System.out.println(value);//99
        value = map.get("体育");
        System.out.println(value);//null
        System.out.println("size:"+map.size());//5.一个键值对算一个元素
        System.out.println("isEmpty:"+map.isEmpty());//false

        System.out.println("书否包含数学这个键"+map.containsKey("数学"));//true
        System.out.println("是否半酣99这个值"+map.containsValue(99));//true
        value = map.remove("数学");
        System.out.println(map);
        System.out.println(value);

        map.clear();
        System.out.println(map);

    }
}
